layui.use(['laydate', 'laypage', 'layer', 'table','upload','form'], function() {
    var laydate = layui.laydate //日期
        , laypage = layui.laypage //分页
        , layer = layui.layer //弹层
        , table = layui.table //表格
        , $ = layui.$ //jquery
        ,upload = layui.upload
        ,form = layui.form;
    //layer.msg('我也太牛了');
    //执行一个 table 实例
    var admin_table = table.render({
        elem: '#adminlist'//表格id
        //,height: 600//表格的高度
        ,url: '/admin/adminlist' //自定义的获取列表的接口   异步请求
        ,parseData: function(res){ //res 返回的列表
            return {
                "code": res.status, //解析接口状态
                "msg": res.message, //解析提示文本
                "count": res.total, //解析数据长度
                "data": res.item //解析数据列表
            };
        }
        ,title: '宿管表'
        ,page: true //开启分页   默认传递两个参数：page: 默认是1  limit:默认是10
        ,toolbar: '#head-option' //开启工具栏，此处显示默认图标
        //,totalRow: true //开启合计行
        ,cols: [[ //表头
            //width:给每列设置宽度，如果不写就是自适应屏幕
            //sort:排序效果
            {type: 'checkbox', fixed: 'left'}
            //field取值跟对象属性一致
            ,{field: 'adminId', title: 'ID',sort: true,width:80}
            ,{field: 'adminName', title: '管理者姓名'}
            ,{field: 'adminTelephone', title: '联系方式'}
            ,{field: 'adminSex', title: '性别',width:80,unresize:true,templet: function(d){if(d.adminSex == 0){return '男'}else{return '女'}}}
            ,{field: 'adminEnrolment', title: '入职日期',templet : "<div>{{layui.util.toDateString(d.adminEnrolment, 'yyyy-MM-dd')}}</div>"}
            //unresize:是否禁用拖拽
            ,{field: 'adminStatus', title: '状态',width:80,unresize:true,templet: function(d){if(d.adminStatus != 1){return '禁用'}else{return '启用'}}}
            //行工具栏
            ,{fixed: 'right', title:'操作',toolbar: '#barDemo'}
        ]]
    });
    //监听工具条
    table.on('tool(adminTable)', function(obj){ //注：tool 是工具条事件名，test 是 table 原始容器的属性 lay-filter="对应的值"
        var data = obj.data; //获得当前行数据
        var layEvent = obj.event; //获得 lay-event 对应的值（也可以是表头的 event 参数对应的值）
        var tr = obj.tr; //获得当前行 tr 的 DOM 对象（如果有的话）
        if(layEvent === 'detail'){ //查看

        } else if(layEvent === 'del'){ //删除
            layer.confirm('真的删除行么', function(index){
                obj.del(); //删除对应行（tr）的DOM结构，并更新缓存
                layer.close(index);
                //向服务端发送删除指令,
                console.log(data.adminId);
                $.ajax({
                    type:"post",
                    url:"/admin/delAdminById",
                    data:{
                        id:data.adminId
                    },
                    dataType:"json",//返回的数据结果为json格式,
                    success:function(res){//后台请求执行成功之后的回调函数
                        //res:后台接口返回的数据
                        if(res.status==200){
                            //index:便于layui记录弹框的索引
                            //function:点击alert弹框的确定之后执行的函数
                            layer.alert(res.message,function(index){
                                //关闭弹框
                                layer.close(index);
                                //重载表格
                                admin_table.reload();
                            })
                        }else{
                            layer.alert(res.message,function(index){
                                //关闭弹框
                                layer.close(index);
                            })
                        }
                    }
                })
            });
        } else if(layEvent === 'edit'){ //编辑
            //window.location.href="/admin/selectAdminById?id="+data.adminId;
            form.val('updateadmin', {
                "adminId": data['adminId']
                ,"adminName": data['adminName']
                ,"adminTelephone": data['adminTelephone']
                ,"adminSex": data['adminSex']
                ,"adminEnrolment": data['adminEnrolment']
                ,"adminStatus": data['adminStatus']
            });
            layer.open({
                //0（信息框，默认）1（页面层）2（iframe层）
                type:1,
                content: $("#updateadmin"),//更新的页面
                area: ['90%', '90%'],
                shade:0.8,//弹层外的区域透明度取值
                shadeClose:true,//是否点击遮罩关闭
            })
        }
    });
    //监听头工具栏事件
    // 监听的是表格的lay-filter的取值
    table.on('toolbar(adminTable)', function(obj){
        var checkStatus = table.checkStatus(obj.config.id)//表格的id
            ,data = checkStatus.data; //获取选中的数据(将数据封装成json对象给你返回组成数组)
        //定义存放被删除数据id的数组
        var ids = [];
        for(var i=0;i<data.length;i++){
            ids.push(data[i].adminId)//数组添加
        }
        console.log(ids)
        //obj.event：点击按钮的lay-event的取值
        switch(obj.event) {
            case 'add':
                layer.open({
                    //0（信息框，默认）1（页面层）2（iframe层）
                    type: 2,
                    content: "/admin/addadmin_page",//添加页面
                    area: ['75%', '75%'],
                    shade: 0.8,//弹层外的区域透明度取值
                    shadeClose: true//是否点击遮罩关闭
                })
                break;
            case 'delete':
                if (data.length === 0) {
                    layer.msg('请选择一行');
                } else {
                    //将获取的选中要删除的id数组传到后台
                    $.ajax({
                        url: "/admin/deleteBatch",//批量删除的接口
                        type: "post",//请求方式
                        data: {//传递到后台的参数
                            //id数组
                            "ids": ids
                        },
                        //直接传输数组，需要将traditional:true
                        traditional: true,
                        dataType: "json",//返回的数据结果为json格式,
                        success: function (res) {//后台请求执行成功之后的回调函数
                            //res:后台接口返回的数据
                            if (res.status == 200) {
                                //index:便于layui记录弹框的索引
                                //function:点击alert弹框的确定之后执行的函数
                                layer.alert(res.message, function (index) {
                                    //关闭弹框
                                    layer.close(index);
                                    //重载表格
                                    admin_table.reload();
                                })
                            } else {
                                layer.alert(res.message, function (index) {
                                    //关闭弹框
                                    layer.close(index);
                                })
                            }
                        }
                    })
                }
                break;
        };
    });
    //日期
    laydate.render({
                elem: '#date2'
            });
    //添加提交from表
    form.on('submit(admin)', function (data) {
        //console.log(data.field);
        $.ajax({
            url:"/admin/addadmin",
            type:"post",
            data:data.field,
            //contentType :"application/json",
            //dataType :"json",
            success:function(res){//后台请求执行成功之后的回调函数
                //res:后台接口返回的数据
                if(res.status==200){
                    //index:便于layui记录弹框的索引
                    //function:点击alert弹框的确定之后执行的函数
                    layer.alert(res.message,function(index){
                        //关闭弹框
                        layer.close(index);
                        //父窗口重载
                        window.parent.location.reload();
                    })
                }else{
                    layer.alert(res.message,function(index){
                        //关闭弹框
                        layer.close(index);
                    })
                }
            }
        })
        return false;
    });
    //修改提交from表
    form.on('submit(updateadmin)', function (data) {
        //console.log(data.field);
        $.ajax({
            url:"/admin/updateadmin",
            type:"post",
            data:data.field,
            //contentType :"application/json",
            //dataType :"json",
            success:function(res){//后台请求执行成功之后的回调函数
                //res:后台接口返回的数据
                if(res.status==200){
                    //index:便于layui记录弹框的索引
                    //function:点击alert弹框的确定之后执行的函数
                    layer.alert(res.message,function(index){
                        //关闭弹框
                        layer.close(index);
                        //父窗口重载
                        window.parent.location.reload();
                    })
                }else{
                    layer.alert(res.message,function(index){
                        //关闭弹框
                        layer.close(index);
                    })
                }
            }
        })
        return false;
    });
    //时间实例化
    laydate.render({
        elem: '#timerange', //指定元素
        type:"date",//date:日期   datetime:日期和时间
        range:"~"//定义分割字符
    });
    //根据日期和关键字进行搜索
    $("#adminsearch").click(function(){
        console.log(timerange);
        console.log(keyword);
        //为了我们搜索之后重新渲染表格数据方便，我们使用重载
        admin_table.reload({
            where: { //设定异步数据接口的额外参数，任意设
                timerange:$("#timerange").val(),//时间范围
                keyword:$("#keyword").val() //关键字
            }
            ,page: {
                curr: 1 //重新从第 1 页开始
            },
            url: '/admin/search'
        });
    })
})
